﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML lang="ja">
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="dsk_sakura.css" type="text/css">
<link rel="shortcut icon" href="images/favicon.ico">
<TITLE>概要</TITLE>
<META NAME="MS-HKWD" CONTENT="概要">
</HEAD>
<BODY>
<script type="text/javascript" src="item.js"></script>
<noscript>[<a href="index.html">目次</a>] <br></noscript>
<!--
<noscript>[<a href="index.html">目次</a>] [<a href="web_frame.html" target="_top">フレームで表示</a>] [<a href="web_search.html">検索</a>]<br></noscript>
-->
<br>
<h2>概要</h2>

<h3 id="c0201">利用イメージ</h3>
<h4>プラグインの入手</h4>
<div class="li200">
<p>
<strong>プラグイン</strong>は<a href="http://sakura.qp.land.to/?Plugin%2F%C5%EA%B9%C6">SakuraEditorWiki</a>で公開されています。
ZIP形式で圧縮されたものをパソコンにダウンロードしてください（解凍は不要です）。
</p>
</div>
<h4>インストール</h4>
<div class="li200">
<p>
プラグインの導入は「共通設定」の「プラグイン」から行います。
まず「プラグインを有効にする」にチェックを入れてください。
次に「ZIPプラグインを導入」でダウンロードしたZIPファイルを指定します。
これでインストールは完了ですが、まだプラグインは利用できません。
これ以降に新しく開いたエディタでは起動時にプラグインが読み込まれ、利用可能になります。
</p>
<img alt="hint" src="images/hint.png" />Windows2000はZIPプラグインに未対応のため、ダウンロードしたファイルをプラグインフォルダー配下に解凍し、「新規プラグインを追加」からインストールしてください。<br>
<p>
プラグインは最大40個までインストールできます。
</p>
<p>
プラグインをインストールすると、設定ファイルがあるフォルダーの下にpluginsフォルダーができ、その配下にZIPファイルの中身が展開されます。
ユーザー別設定が有効な場合は<em>C:\Users\(ユーザー名)\AppData\Roaming\sakura\plugins</em>、そうでなければ<em>C:\Program Files(x86)\sakura\plugins</em>にあるはずです。<br>
以下、pluginsを<strong>プラグインフォルダー</strong>と呼び、その下のプラグインごとのフォルダーを<strong>個別フォルダー</strong>と呼びます。<br>
</p>
</div>
<h4>アンインストール</h4>
<div class="li200">
<p>
プラグインのアンインストールは、設定画面から「削除」を行います。
ディスク上には残るので、完全に削除する場合は手動で個別フォルダーを削除してください。
ディスクから削除していなければ、「新規プラグインの追加」で再度インストールできます。
</p>
</div>
<h4>バージョンアップ</h4>
<div class="li200">
<p>
プラグインの新バージョンが出た場合は、設定画面からZIPプラグインの導入でファイルを指定し更新し、エディタ本体を再起動すると利用可能になります。
</p>
<img alt="hint" src="images/hint.png" />Windows2000の場合は、個別フォルダーの内容を上書きして更新してください。
</div>

<h3 id="c0202">大まかな動き</h3>
<div class="li200">
・エディタプロセスの起動時に、共通情報のプラグインテーブルを参照し、インストール済みのプラグインに対して以下の読み込み操作を行う。<br>
　個別フォルダー内にはプラグインの情報を記述したテキストファイル(plugin.def)があり、エディタはまずこのテキストファイルを読み込む。<br>
　以下、このファイルを<strong>プラグイン定義ファイル</strong>と呼ぶ。<br>
<br>
　また、プラグインフォルダー直下に、プラグインごとのテキストファイルを置き、そこにプラグインのオプションなど可変の情報を記述する。<br>
　以下、このファイルを<strong>オプションファイル</strong>と呼ぶ。<br>
　ファイル名は "個別フォルダー名.ini" とする。<br>
　プラグイン定義ファイルのOptionセクションで指定した項目は、共通設定のプラグイン個別設定から値を編集できる。<br>
<br>
・プラグイン定義ファイルの内容に従い、メモリ上にプラグインオブジェクトを作成する。<br>
<br>
・プラグイン定義ファイルの内容に従い、エディタ内の各機能にあらかじめ設定された、プラグイン可能な箇所に、プラグインの関数(<strong>プラグ</strong>)を関連付ける。<br>
　以下、プラグイン可能な箇所を<strong>ジャック</strong>(プラグをさす穴)と呼ぶ。<br>
<br>
・エディタを操作し、ジャックに達したら、関連付けられている全てのプラグを実行する。アウトライン解析やスマートインデントはタイプ別設定で選択したもの一つだけを実行する。<br>
<br>
・エディタプロセスの終了時に、読み込まれていたプラグインはすべて解放する。<br>
<br>
・プラグインは、コンパイルされたDLLや、WSHで実行できるマクロ言語などに対応する。ただし一度読み込んだ後は、違いを意識せずに操作できる。<br>
　(現時点でDLLプラグインはまだ使い物にならない)<br>
</div><br>

<h3 id="c0203">フォルダー構成</h3>
<div class="li300">
<pre>
設定ファイルフォルダー
  ├ sakura.ini
  └ plugins/
      ├ ○○.ini           // オプションファイル
      ├ ××.ini
      ├ ○○/              // 個別フォルダー
      │  ├ plugin.def     // プラグイン定義ファイル
      │  ├ readme.txt     // 説明
      │  ├ ○○_A.js      // プログラム等
      │  └ ○○_B.js
      └ ××/
          ├ plugin.def
          └ ××.dll       // dllにも対応できたり・・・
</pre>
</div><br>

<h3 id="c0204">ER図</h3>
<div class="li200">
<table class="er">
<caption style="display: none">無題</caption>
<tr style="display: none"><th scope="col"></th><th scope="col"></th></tr>
<tr><td class="er">エディタ本体</td><td>1 - *</td><td class="er">プラグイン</td>
	<td>複数のプラグインをエディタで使うことができる。</td></tr>
<tr><td class="er">エディタ本体</td><td>1 - *</td><td class="er">ジャック</td>
	<td>エディタには複数のジャック(プラグイン可能箇所)がある。</td></tr>
<tr><td class="er">プラグイン  </td><td>1 - *</td><td class="er">プラグ</td>
	<td>プラグインは複数のプラグ(実行単位)を持つ。</td></tr>
<tr><td class="er">ジャック    </td><td>1 - *</td><td class="er">プラグ</td>
	<td>ジャックには複数のプラグを関連付けることができる。</td></tr>
</table>
</div><br>

<h3 id="c0205">ジャック一覧</h3>
<div class="li200">
<table class="box">
	<caption style="display: none">無題</caption>
<tr><th scope="auto" class="box">プラグインの種類</th><th scope="auto" class="box">ジャック名<br>([Plug]で定義)</th><th scope="auto" class="box"><em>ジャック名</em>.Label</th><th scope="auto" class="box">インターフェースオブジェクト</th></tr>
<tr><td class="box"><a href="implementation03.html#c030501">アウトライン解析</a></td><td class="box">Outline</td><td class="box">アウトライン標準ルール選択肢</td><td class="box"><a href="implementation02.html#c030403">Outline</a></td></tr>
<tr><td class="box"><a href="implementation03.html#c030502">スマートインデント</a></td><td class="box">Indent</td><td class="box">スマートインデント選択肢</td><td class="box"><a href="implementation02.html#c030404">Indent</a></td></tr>
<tr><td class="box" rowspan="2"><a href="implementation03.html#c030503">補完候補検索</a><br>(Ver.2.0.6.0以降)</td><td class="box">ComplementGlobal</td><td class="box">no</td><td class="box" rowspan="2"><a href="implementation02.html#c030405">Complement</a></td></tr>
<tr><td class="box">Complement</td><td class="box">入力補完機能選択肢</td></tr>
<tr><td class="box" rowspan="6"><a href="implementation03.html#c030504">エディタイベント</a><br>(Ver.2.0.8.0以降)</td><td class="box">EditorStart</td><td class="box">no</td><td class="box" rowspan="6"></td></tr>
<tr><td class="box">EditorEnd</td><td class="box">no</td></tr>
<tr><td class="box">DocumentOpen</td><td class="box">no</td></tr>
<tr><td class="box">DocumentClose</td><td class="box">no</td></tr>
<tr><td class="box">DocumentBeforeSave</td><td class="box">no</td></tr>
<tr><td class="box">DocumentAfterSave</td><td class="box">no</td></tr>
<tr><td class="box">コマンド追加</td><td class="box">[Command]で定義</td><td class="box">コマンドの表示名</td><td></td></tr>
</table>
</div><br>

<div style="text-align: center"><a href="beginning.html">前へ＜</a>　　<a href="implementation01.html">＞次へ</a></div>
</BODY></HTML>
